Private ["_dir","_speed","_vehicle","_vel","_vehSpeed","_pushSpeed"];

_vehicle = _this select 0;
_vehicle setVariable ["sxp_pushback", true, true];
_pushSpeed = -3;

while {_vehicle getVariable ["sxp_pushback", false]} do {
	_vehSpeed = (speed _vehicle);
	_vel = velocity _vehicle;
	_dir = direction _vehicle;
	_speed = _pushSpeed;
	_velx = (_vel select 0);
	_vely = (_vel select 1);
	_speedx = ((sin _dir)*_speed);
	_speedy = ((cos _dir)*_speed);
	_velsetx = _speedx - _velx;
	_velsetY = _speedy - _vely;
	_vehicle setVelocity [(_vel select 0)+_velsetx,(_vel select 1)+_velsety,(_vel select 2)];
	sleep 0.1;
	if ((isNull (driver _vehicle)) || !(alive (driver _vehicle))) then {
		_vehicle setVariable ["sxp_pushback", nil, true];
	};
};